package com.hzit.manager.service.impl;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.hzit.manager.service.ISpecificationOptionService;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.system.api.domain.SpecificationOption;
import com.ruoyi.system.api.domain.TypeTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hzit.manager.mapper.TypeTemplateMapper;
import com.hzit.manager.service.ITypeTemplateService;

/**
 * 模板管理Service业务层处理
 *
 * @author wf
 * @date 2024-09-05
 */
@Service
public class TypeTemplateServiceImpl implements ITypeTemplateService
{
    @Autowired
    private TypeTemplateMapper typeTemplateMapper;
    @Autowired
    private RedisService redisService;
    @Autowired
    private ISpecificationOptionService optionService;

    /**
     * 查询模板管理
     *
     * @param id 模板管理主键
     * @return 模板管理
     */
    @Override
    public TypeTemplate selectTypeTemplateById(Long id)
    {
        return typeTemplateMapper.selectTypeTemplateById(id);
    }

    /**
     * 查询模板管理列表
     *
     * @param typeTemplate 模板管理
     * @return 模板管理
     */
    @Override
    public List<TypeTemplate> selectTypeTemplateList(TypeTemplate typeTemplate)
    {
        return typeTemplateMapper.selectTypeTemplateList(typeTemplate);
    }

    /**
     * 新增模板管理
     *
     * @param typeTemplate 模板管理
     * @return 结果
     */
    @Override
    public int insertTypeTemplate(TypeTemplate typeTemplate)
    {
        return typeTemplateMapper.insertTypeTemplate(typeTemplate);
    }

    /**
     * 修改模板管理
     *
     * @param typeTemplate 模板管理
     * @return 结果
     */
    @Override
    public int updateTypeTemplate(TypeTemplate typeTemplate)
    {
        return typeTemplateMapper.updateTypeTemplate(typeTemplate);
    }

    /**
     * 批量删除模板管理
     *
     * @param ids 需要删除的模板管理主键
     * @return 结果
     */
    @Override
    public int deleteTypeTemplateByIds(Long[] ids)
    {
        return typeTemplateMapper.deleteTypeTemplateByIds(ids);
    }

    /**
     * 删除模板管理信息
     *
     * @param id 模板管理主键
     * @return 结果
     */
    @Override
    public int deleteTypeTemplateById(Long id)
    {
        return typeTemplateMapper.deleteTypeTemplateById(id);
    }

    /**
     * 1. 以模板id为key，以品牌列表为值放到redis中
     * 2. 以模板id为key，以规格及规格选项列表为值放到redis
     * @return
     */
	@Override
	public List<TypeTemplate> findAll() {
        List<TypeTemplate> typeTemplates = this.selectTypeTemplateList(null);
        for (TypeTemplate typeTemplate : typeTemplates) {
            // 1. 先放品牌列表
            String brandIds = typeTemplate.getBrandIds();
            List<Map> brandList = JSON.parseArray(brandIds, Map.class);
            redisService.setCacheMapValue("brandList",typeTemplate.getId() + "",brandList);
            // 2. 再放规格及规格选项列表
            String specIds = typeTemplate.getSpecIds();
            List<Map> specList = JSON.parseArray(specIds, Map.class);
            for (Map map : specList) {
                Long id = new Long(map.get("id")+"");   // 规格id
                SpecificationOption option = new SpecificationOption();
                option.setSpecId(id);
                List<SpecificationOption> options = optionService.selectSpecificationOptionList(option);
                map.put("options",options);
            }
            redisService.setCacheMapValue("specList",typeTemplate.getId() + "",specList);
        }
        return typeTemplates;
	}
}
